import os
import pandas as pd


def analyze_stock_data(input_directory, output_file):
    """
    分析股票数据，计算每个时间点的up_cnt、down_cnt和avg_change_pct，并保存到输出文件。

    参数:
    - input_directory: str, 包含CSV文件的输入目录路径
    - output_file: str, 输出结果的CSV文件路径
    """
    # 初始化结果列表
    results = []

    # 遍历目录中的每个文件
    for filename in os.listdir(input_directory):
        if filename.endswith('.csv'):
            file_path = os.path.join(input_directory, filename)

            # 读取CSV文件
            df = pd.read_csv(file_path)

            # 转换日期列为日期类型
            df['日期'] = pd.to_datetime(df['日期'])

            # 按日期（精确到秒）分组并统计
            grouped = df.groupby(df['日期']).agg(
                up_cnt=pd.NamedAgg(column='change_pct', aggfunc=lambda x: (x > 0).sum()),
                down_cnt=pd.NamedAgg(column='change_pct', aggfunc=lambda x: (x < 0).sum()),
                avg_change_pct=pd.NamedAgg(column='change_pct', aggfunc='mean')
            ).reset_index()

            # 添加文件名到结果中
            grouped['filename'] = filename
            results.append(grouped)

    # 合并所有结果
    final_result = pd.concat(results, ignore_index=True)

    # 输出到CSV文件
    final_result.to_csv(output_file, index=False)

    print(f"分析结果已保存到 {output_file}")


# 示例调用
input_directory = r'F:\Personal\data\行情数据\15min_new'
output_file = r'F:\Personal\data\行情数据\15_min_analysis.csv'
analyze_stock_data(input_directory, output_file)
